package com.example.kotlindemo.data

import androidx.lifecycle.LiveData
import androidx.room.*


// TaskDao (TaskDao.kt)
// 定义了对 tasks 表的操作接口，包括：
// 查询未完成任务（getPendingTasks）：按创建时间升序。
// 查询已完成任务（getCompletedTasks）：按完成时间降序。
// 插入（insertTask）、更新（updateTask）、删除（deleteTask）和按 ID 查询任务（getTaskById）。
// 查询操作返回 LiveData<List<Task>>，支持响应式更新。
@Dao
interface TaskDao {
    // 查询未完成任务，按创建时间升序
    @Query("SELECT * FROM tasks WHERE isCompleted = 0 ORDER BY createdTimestamp ASC")
    fun getPendingTasks(): LiveData<List<Task>>

    // 查询已完成任务，按完成时间降序（最新的在前）
    @Query("SELECT * FROM tasks WHERE isCompleted = 1 ORDER BY completedTimestamp DESC")
    fun getCompletedTasks(): LiveData<List<Task>>

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    suspend fun insertTask(task: Task): Long // 返回插入的 rowId

    @Update
    suspend fun updateTask(task: Task)

    @Delete
    suspend fun deleteTask(task: Task) // 虽然目前没用到删除，但最好有

    @Query("SELECT * FROM tasks WHERE id = :taskId")
    suspend fun getTaskById(taskId: Long): Task?
}